package com.xhtt.modules.inspection.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.xhtt.common.utils.PageUtils;
import com.xhtt.modules.inspection.dto.InspectionAppDTO;
import com.xhtt.modules.inspection.entity.InsTask;
import com.xhtt.modules.inspection.entity.InsTaskStep;
import com.xhtt.modules.inspection.schedule.InsMsgEntity;

import javax.servlet.http.HttpServletResponse;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * <p>
 * 巡检-每次任务
 * </p>
 *
 * @author xj
 * @since 2019-01-29
 */
public interface IInsTaskStepService extends IService<InsTaskStep> {

    // 添加日巡检任务 type: 1日班2夜班
    List<InsTaskStep> addDay(List<List<LocalDateTime>> stepResults, InsTask insTask, int type);

    // 添加周巡检任务或者月巡检任务
    List<InsTaskStep> addWeekOrMonth(List<List<LocalDateTime>> stepResults, InsTask insTask);

    // 获取现场巡检日巡检列表
    List<InspectionAppDTO> queryDayList(Integer userId);

    // 获取现场巡检周巡检列表
    List<InspectionAppDTO> queryWeekList(Integer userId);

    // 获取现场巡检月巡检列表
    List<InspectionAppDTO> queryMonthList(Integer userId);

    // 根据当前日期和巡检类型获取子任务数据
    List<InsTaskStep> getTaskStepList(Integer taskId);

    // 判断人是否有任务权限
    boolean taskIsIncludeUser(Integer userId, Integer taskStepId);

    // 综合查询
    PageUtils queryPageIsFinish(Map<String, Object> params);

    // 导出
    void exportExcel(HttpServletResponse response, Map<String, Object> params);

    // 获取子任务已经完成的检点id集合
    Set<Integer> getTaskStepPointChecked(Integer stepId);

    // 查看该任务是否属于这个人巡检
    int isBelong(Integer stepId, Integer userId);

    // 查询(没用，用getById()
    InsTaskStep getAllById(Integer taskStepId);

    // 待推送列表
    List<InsMsgEntity> pushList();

    // 修改同一子任务推送状态为已推送
    void updatePushStatus(Integer taskId, String step);
}
